﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using bi4homev2;
using bi4homev3.Acceso_a_Datos;
using bi4homev3.Logica.Comandos.Reportes;


namespace bi4homev3.Logica
{
    #region clase acciones de reportes
    //Esta clase maneja la logica de los reportes
    //Los reportes son manejados con el patron Command
    //ubicados en la carpeta Comandos



    public class AccionesReporte
    {

        #region Metodos de manejo de reportes

        //Se crea un metodo por reportes, estos deben devolver un dataset
        //que luego se usa para dibujar los graficos respectivos

        public DataSet Serv_AlimentosXTiempo(string user, string fecha1, string fecha2)
        {
            //se crea el objeto invocante generico
            InvocanteReporte invocar = new InvocanteReporte(user);
            //se crea el comando concreto, existe uno para cada reporte
            ComandoReporteServAli rsa = new ComandoReporteServAli();
            //se crean los objetos necesarios y se invoca al metodo Invocar del invcante
            DataSet ds = new DataSet();
            ds = invocar.Invocar(rsa, fecha1, fecha2);
            #region conversion de datos de dataset NO USADA
            DataSet ds1 = new DataSet();
            double serv = Convert.ToDouble(ds.Tables[0].Rows[0].ItemArray[0]);
            double alim = Convert.ToDouble(ds.Tables[0].Rows[1].ItemArray[0]);
            double total = alim + serv;
            DataTable table = ds1.Tables.Add("tabla");
            table.Columns.Add(new DataColumn("Renglon"));
            table.Columns.Add(new DataColumn("% de Gasto",typeof(double)));
            DataRow servicio = table.NewRow();
            servicio["Renglon"] = "Servicio";
            servicio["% de Gasto"] = (serv * 100) / total;
            table.Rows.Add(servicio);
            DataRow alimento = table.NewRow();
            alimento["Renglon"] = "Alimento";
            alimento["% de Gasto"] = (alim * 100) / total;
            table.Rows.Add(alimento);
            #endregion 
            return ds1;
        }

        
        public DataSet ServiciosXMes(string user, string fecha1, string fecha2)
        {
            InvocanteReporte invocar = new InvocanteReporte(user);
            ComandoServiciosXMes csm = new ComandoServiciosXMes();
            DataSet ds = new DataSet();
            ds = invocar.Invocar(csm, fecha1, fecha2);
            ds.Tables[0].Columns[0].Caption = "Gasto";
            ds.Tables[0].Columns[1].Caption = "Servicio";
            #region conversion de dataset NO USADA
            DataSet ds1 = new DataSet();
            double serv = Convert.ToDouble(ds.Tables[0].Rows[0].ItemArray[0]);
            double alim = Convert.ToDouble(ds.Tables[0].Rows[1].ItemArray[0]);
            double total = alim + serv;
            DataTable table = ds1.Tables.Add("tabla");
            table.Columns.Add(new DataColumn("Renglon"));
            table.Columns.Add(new DataColumn("% de Gasto", typeof(double)));
            DataRow servicio = table.NewRow();
            servicio["Renglon"] = "Servicio";
            servicio["% de Gasto"] = (serv * 100) / total;
            table.Rows.Add(servicio);
            DataRow alimento = table.NewRow();
            alimento["Renglon"] = "Alimento";
            alimento["% de Gasto"] = (alim * 100) / total;
            table.Rows.Add(alimento);
            #endregion
            return ds;
        }

        public DataSet CategoriasXMes (string user, string fecha1, string fecha2)
        {
            InvocanteReporte invocar = new InvocanteReporte(user);
            ComandoCategoriasXMes ccm = new ComandoCategoriasXMes();
            DataSet ds = new DataSet();
            ds = invocar.Invocar(ccm, fecha1, fecha2);
            ds.Tables[0].Columns[0].Caption = "Gasto";
            ds.Tables[0].Columns[1].Caption = "Categoria";
            return ds;

        }
    }
        #endregion
    #endregion
}

